home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Copper / USER_COPPER II+EVERY.LST < prev    next >
File List  |  1989-06-01  |  4KB  |  170 lines

  1. ' User-Copper  Variation mit der Anweisung EVERY
  2. '
  3. '
  4. @copper_init
  5. EVERY 400 GOSUB verÄndern
  6. '
  7. REPEAT
  8.   PRINT "Bunt nicht?",
  9. UNTIL MOUSEK
  10. '
  11. @user_copper_aus
  12. EDIT
  13. '
  14. > PROCEDURE datas
  15.   DATA $0180,$0000
  16.   DATA $7701,$fffe
  17.   DATA $0180,$0f00
  18.   DATA $7801,$fffe
  19.   DATA $0180,$0f10
  20.   DATA $7901,$fffe
  21.   DATA $0180,$0f20
  22.   DATA $7a01,$fffe
  23.   DATA $0180,$0f40
  24.   DATA $7b01,$fffe
  25.   DATA $0180,$0f60
  26.   DATA $7c01,$fffe
  27.   DATA $0180,$0f70
  28.   DATA $7d01,$fffe
  29.   DATA $0180,$0f80
  30.   DATA $7e01,$fffe
  31.   DATA $0180,$0f90
  32.   DATA $7f01,$fffe
  33.   DATA $0180,$0fa0
  34.   DATA $8001,$fffe
  35.   DATA $0180,$0fb0
  36.   DATA $8101,$fffe
  37.   DATA $0180,$0fc0
  38.   DATA $8201,$fffe
  39.   DATA $0180,$0fd0
  40.   DATA $8301,$fffe
  41.   DATA $0180,$0fe0
  42.   DATA $8401,$fffe
  43.   DATA $0180,$0ff0
  44.   DATA $8501,$fffe
  45.   DATA $0180,$0ff1
  46.   DATA $8601,$fffe
  47.   DATA $0180,$0ff2
  48.   DATA $8701,$fffe
  49.   DATA $0180,$0ff3
  50.   DATA $8801,$fffe
  51.   DATA $0180,$0ff4
  52.   DATA $8901,$fffe
  53.   DATA $0180,$0ff5
  54.   DATA $8a01,$fffe
  55.   DATA $0180,$0ef5
  56.   DATA $8b01,$fffe
  57.   DATA $0180,$0df5
  58.   DATA $8c01,$fffe
  59.   DATA $0180,$0cf5
  60.   DATA $8d01,$fffe
  61.   DATA $0180,$0bf4
  62.   DATA $8e01,$fffe
  63.   DATA $0180,$0af3
  64.   DATA $8f01,$fffe
  65.   DATA $0180,$09f2
  66.   DATA $9001,$fffe
  67.   DATA $0180,$08f1
  68.   DATA $9101,$fffe
  69.   DATA $0180,$07f2
  70.   DATA $9201,$fffe
  71.   DATA $0180,$06e3
  72.   DATA $9301,$fffe
  73.   DATA $0180,$06d3
  74.   DATA $9401,$fffe
  75.   DATA $0180,$06c3
  76.   DATA $9501,$fffe
  77.   DATA $0180,$06b3
  78.   DATA $9601,$fffe
  79.   DATA $0180,$06a3
  80.   DATA $9801,$fffe
  81.   DATA $0180,$0693
  82.   DATA $9901,$fffe
  83.   DATA $0180,$0683
  84.   DATA $9a01,$fffe
  85.   DATA $0180,$0673
  86.   DATA $9b01,$fffe
  87.   DATA $0180,$0664
  88.   DATA $9c01,$fffe
  89.   DATA $0180,$0655
  90.   DATA $9d01,$fffe
  91.   DATA $0180,$0555
  92.   DATA $9e01,$fffe
  93.   DATA $0180,$0546
  94.   DATA $9f01,$fffe
  95.   DATA $0180,$0
  96.   DATA $ffff
  97. RETURN
  98. > PROCEDURE usercop_lÄnge
  99.   DO
  100.     READ x%
  101.     EXIT IF x%=&HFFFF
  102.     INC anz&    ! Anz Worte
  103.   LOOP
  104.   MUL anz&,2    ! Anz Bytes
  105.   RESTORE
  106. RETURN
  107. > PROCEDURE user_copper_an
  108.   VSYNC                         ! Warten auf Vblank, damit Copper nicht ausliest
  109.   LONG{_GfxBase+50}=(u_copadr%) ! (Unsere) Adresse in den Auto-Vector schreiben
  110. RETURN
  111. > PROCEDURE user_copper_aus
  112.   VSYNC                        ! Warten, damit Copper nicht stoert
  113.   LONG{_GfxBase+50}=(altcop%)  ! Vector zurueckschreiben (Alte Datenliste)
  114.   x%=MFREE(u_copadr%,mem&)     ! User-Coplistspeicher Frei!
  115. RETURN
  116. > PROCEDURE memory_copperbereit
  117.   mem&=76+anz&               ! 76 Bytes werden noch vom System uebernommen
  118.   u_copadr%=MALLOC(mem&,2)   ! Chipmemory belegen in errechneter groesse
  119.   neu_copadr%=u_copadr%      ! Zweimal speichern (Zaehler und Uebergabe)
  120.   '
  121.   altcop%=LPEEK(_GfxBase+50) ! Copper-Automatik-Vector relativ zu GFXBASE retten
  122.   startcop%=altcop%+84       ! Anfang der Daten die uebernommen werden muessen
  123.   '        Startliste des Systems Kopieren
  124.   BMOVE startcop%,neu_copadr%,60
  125.   '        Unsere Liste
  126.   CLR zeiger&,x%
  127.   RESTORE
  128.   '        Unseren Adress-Zeiger erhoehen
  129.   ADD neu_copadr%,60         ! 60 sind schon drin, darum um 60 erhoehen
  130.   '
  131.   counter_oben%=neu_copadr%+4    ! Oberen Zeiger auf Bewegungs-Position setzen.
  132.   '                                = Erster Copper WAIT
  133.   DO
  134.     READ x%
  135.     EXIT IF x%=&HFFFF
  136.     DPOKE neu_copadr%+zeiger&,x%
  137.     ADD zeiger&,2
  138.   LOOP
  139.   '        End Liste des Systems Kopieren
  140.   ADD startcop%,60
  141.   ADD neu_copadr%,anz&
  142.   counter_unten%=neu_copadr%-8   ! Unteren Zeiger auf zweite Bewegungsposition
  143.   '                              setzen.= Letzter Copper-Wait
  144.   BMOVE startcop%,neu_copadr%,16
  145. RETURN
  146. > PROCEDURE ab_verÄndern
  147.   ' Zaehler = Anfangsadresse der Farbliste
  148.   FOR i|=0 TO 42
  149.     VSYNC
  150.     CARD{counter_oben%}=(&H7501+i|*&H100)
  151.     CARD{counter_unten%}=(&H9F01+i|*&H100)
  152.   NEXT i|
  153. RETURN
  154. > PROCEDURE auf_verÄndern
  155.   FOR i|=42 DOWNTO 0
  156.     VSYNC
  157.     CARD{counter_oben%}=(&H7501+i|*&H100)
  158.     CARD{counter_unten%}=(&H9F01+i|*&H100)
  159.   NEXT i|
  160. RETURN
  161. PROCEDURE copper_init
  162.   @usercop_lÄnge
  163.   @memory_copperbereit
  164.   @user_copper_an
  165. RETURN
  166. PROCEDURE verÄndern
  167.   @ab_verÄndern
  168.   @auf_verÄndern
  169. RETURN
  170.